Events

Events oder auch Ereignisse können verwendet werden, um Hintergrundjobs zu starten. Da ein Event auch vom Betriebssystem ausgelöst werden kann, eignet es sich hervorragend zur Realisierung von Schnittstellen.

[notice type=’alert’]Verwechseln Sie die Events nicht mit den Ereignissen aus dem Bereich “Workflow”!!! Diese heißen zwar genau so, werden aber anders behandelt.[/notice]

Anlegen eines Events

Um ein Event im R/3 anzulegen, verwenden Sie die Transaktion SM62. Klicken Sie auf “Benutzerereignisbezeichnungen Pflegen” und drücken Sie <Enter>. Sie können nun mit dem Anlegen-Symbol ein Ereignis anlegen. Geben Sie hierzu nur den Namen und die Bezeichnung ein.

Auslösen eines Events

…aus SAP

Sie können ein Event aus R/3 heraus mit der Transaktion SM64 auslösen.

Mit der Methode cl_batch_event=>raise( ) erreichen Sie das gleiche aus einem Programm heraus. Der Funktionsbaustein BP_EVENT_RAISE sollte nicht mehr verwendet werden, da er als veraltet gekennzeichnet wurde.

Wenn man cl_batch_event=>raise auslöst, kann man außer der eventid auch einen Eventparameter mitgeben. Wenn ein Job allgemein auf die Eventid reagiert, kann während der Laufzeit dieser Eventparameter mit Hilfe des Funktionsbausteins GET_JOB_RUNTIME_INFO ausgelesen werden.  Da der Parameter ein recht langes Textfeld ist kann man damit z.B. Informationen mitgeben welches Material, Kunde etc. in diesem speziellen Fall bearbeitet werden soll.

…vom Betriebssystem

Auf Betriebssystemebene rufen Sie das Programm sapevt (für UNIX) bzw. sapevt.exe (für Windows) auf das im R/3-Arbeitsverzeichnis steht:

sapevt z_event -p DATEI_IST_DA pf=mbs_d00.pfl

Alternativ können Sie auch den Namen des R/3-Systems angeben (name) und die Instanznr (nr). Es erscheint dann die Meldung “No profile used” die aber ignoriert werden kann (Diesmal ohne Parameter):

sapevt z_event name=TT1 nr=01

Sie können so eine einfach Schnittstelle realisieren, in dem Sie eine Datei auf den Applikationsserver kopieren und danach das Programm ausführen. Mit der Transaktion SM36 legen Sie einen Job an, der auf dieses Ereignis reagiert und die Datei einliest.

Parameter auslesen

Mit dem Funktionsbaustein GET_JOB_RUNTIME_INFO können die übergebenen Parameter innerhalb des Programms wieder ausgelesen werden.

Enno Wulff

Leave a Comment